<?php
ob_start();
header('Content-type: text/html;charset=utf-8');
/*
	此文件主要功能如下：
		1.在数据库中添加新记录
		2.返回新加记录信息。JSON格式
		3.创建上传目录
	此文件主要在数据库中添加新的记录并返回文件信息
		如果存在则在数据库中添加一条相同记录。返回添加的信息
		如果不存在，则向数据库中添加一条记录。并返回此记录ID
	控件每次计算完文件MD5时都将向信息上传到此文件中
	@更新记录：
		2022-11-05 优化
		2017-08-17 取消对redis的引用
		2017-05-29 增加块路径生成逻辑
		2014-08-12 完成逻辑。
*/
require '../../../vendor/autoload.php';

use utils\PathTool;
use utils\WebBase;
use model\FileInf;
use biz\PathGuidBuilder;
use biz\up7_biz_event;

$wb = new WebBase();

$id        = $_GET["id"];
$uid       = $_GET["uid"];
$lenLoc    = $_GET["lenLoc"];//10240
$sizeLoc   = $_GET["sizeLoc"];//10mb
$sizeLoc   = str_replace("+", " ", $sizeLoc);
$blockSize = $wb->reqInt("blockSize");
$blockCount= $wb->reqInt("blockCount");
$callback  = $_GET["callback"];//jsonp
$pathLoc   = $_GET["pathLoc"];
$pathLoc   = PathTool::url_decode($pathLoc);

if(    strlen($uid)<1
	|| empty($sizeLoc))
{
	$ret = array(
		"value"=>"null",
		"inf"=>"参数为空,请检查uid,sizeLoc");
	$str = json_encode($ret,JSON_UNESCAPED_SLASHES| JSON_UNESCAPED_UNICODE);
	echo $callback."($str)";
	die();
}

$fileSvr             = new FileInf();
$fileSvr->id         = $id;
$fileSvr->fdChild    = false;
$fileSvr->fdTask     = false;
$fileSvr->nameLoc    = PathTool::getName($pathLoc);
$fileSvr->pathLoc    = $pathLoc;
$fileSvr->nameSvr    = $fileSvr->nameLoc;
$fileSvr->lenLoc     = $lenLoc;
$fileSvr->sizeLoc    = $sizeLoc;
$fileSvr->blockSize  = $blockSize;
$fileSvr->blockCount = $blockCount;
$fileSvr->uid        = $uid;

//生成路径
$pb = new PathGuidBuilder();
$fileSvr->pathSvr = $pb->genFile($id,$fileSvr->nameLoc);
$fileSvr->pathSvr = str_replace("\\", "/", $fileSvr->pathSvr);

//触发事件
up7_biz_event::file_create($fileSvr);

//fix:防止json_encode将汉字转换成unicode
$fileSvr->nameLoc = PathTool::urlencode_safe($fileSvr->nameLoc);
$fileSvr->pathLoc = PathTool::urlencode_safe($fileSvr->pathLoc);
	
$json = json_encode($fileSvr);//低版本php中，json_encode会将汉字进行unicode编码
$json = urldecode( $json );//还原汉字

$json = urlencode($json);
$json = str_replace("+","%20",$json);
$json = $callback . "({'value':'$json'})";//返回jsonp格式数据。
echo $json;
header('Content-Length: ' . ob_get_length());
?>